package com.hugang.reflect;

import org.junit.Test;

import java.io.FileInputStream;
import java.util.Properties;

/**
 * 了解类的加载器
 * @author shkstart
 * @create 2019 下午 2:16
 */
public class ClassLoaderTest {

    @Test
    public void test1(){
        //对于自定义类，使用系统类加载器进行加载
        ClassLoader classLoader = ClassLoaderTest.class.getClassLoader();
        System.out.println(classLoader);
        //调用系统类加载器的getParent()：获取扩展类加载器
        ClassLoader classLoader1 = classLoader.getParent();
        System.out.println(classLoader1);
        //调用扩展类加载器的getParent()：无法获取引导类加载器
        //引导类加载器主要负责加载java的核心类库，无法加载自定义类的。
        ClassLoader classLoader2 = classLoader1.getParent();
        System.out.println(classLoader2);

        ClassLoader classLoader3 = String.class.getClassLoader();
        System.out.println(classLoader3);

    }
    /*
    Properties：用来读取配置文件。

     */
    @Test
    public void test2() throws Exception {
        Properties properties = new Properties();
        //此时的文件默认位置为当前module根目录
//        读取配置文件方式一：
//        properties.load(new FileInputStream("jdbc.properties"));
        properties.load(new FileInputStream("src\\jdbc1.properties"));
        String name = properties.getProperty("name");
        System.out.println(name);

//        ClassLoader classLoader = ClassLoaderTest.class.getClassLoader();
//        //此时的文件默认位置为src
//        //读取配置文件方式二：使用系统类加载器
//        InputStream is = classLoader.getResourceAsStream("jdbc1.properties");
//        properties.load(is);
//        String name = properties.getProperty("name");
//        System.out.println(name);
    }

}
